package com.zx.onlineeducation.service.edu.service;

import com.zx.onlineeducation.service.edu.entity.SubjectDO;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zx.onlineeducation.service.edu.entity.vo.SubjectQueryVO;
import com.zx.onlineeducation.service.edu.entity.vo.SubjectTreeVO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * <p>
 * 课程分类 服务类
 * </p>
 *
 * @author 郑雪
 * @since 2022-01-12
 */
public interface SubjectService extends IService<SubjectDO> {

    /**
     * 添加课程分类，通过上传的Excel文件批量添加数据
     *
     * @param file 上传的Excel文件 {@link MultipartFile}
     * @author 郑雪
     * @since 2022-01-12
     */
    void save(MultipartFile file);

    /**
     * 获取课程分类树形结构数据列表
     *
     * @param  subjectQueryVO 课程分类查询对象 {@link SubjectQueryVO}
     * @return 携带SubjectTreeVO对象的List集合 {@link SubjectTreeVO}
     * @author 郑雪
     * @since 2022-01-12
     */
    List<SubjectTreeVO> getTree(SubjectQueryVO subjectQueryVO);

    /**
     * 删除课程分类及其下级分类
     *
     * @return 成功 true ，失败 false
     * @param id 课程分类ID
     * @author 郑雪
     * @since 2022-01-13
     */
    boolean remove(String id);

    /**
     * 获取一级课程分类列表
     *
     * @return SubjectDO对象的List集合 ${@link SubjectDO}
     * @author 郑雪
     * @since 2022-01-13
     */
    List<SubjectDO> getOneLevel();

    /**
     * 获取二级课程分类列表
     *
     * @param  parentId 一级课程分类ID
     * @return SubjectDO对象的List集合 ${@link SubjectDO}
     * @author 郑雪
     * @since 2022-01-13
     */
    List<SubjectDO> getTwoLevel(String parentId);
}
